package com.bdqn.singleton;

/**
 * 计数器
 *
 * 单例模式 饿汉式 线程安全
 */
public class CounterSingleton01 {

    // 第二步：饿汉式 定义本类私有的对象，并实例化
    private static CounterSingleton01 instance = new CounterSingleton01();
    // 第一步：将默认构造方法定义为私有的（private），外部将不能直接实例化
    private CounterSingleton01() {}
    // 第三步：提供获得唯一实例的公开（public）方法
    /**
     * 获得唯一实例
     *
     * @return
     */
    public static synchronized CounterSingleton01 getInstance() {
        return instance;
    }

    int count = 0; // 计数器成员变量

    /**
     * 计数
     *
     * @return
     */
    public int count() {
        return this.count++;
    }
}
